package com.caryguan.demo;

/**
 * @author caryguan
 * @version V1.0
 * @Package com.caryguan.demo
 * @date 2020/10/12 10:27
 */
public class 超过经理收入的员工 {
    /**
     * Employee 表包含所有员工，他们的经理也属于员工。每个员工都有一个 Id，此外还有一列对应员工的经理的 Id。
     *
     * +----+-------+--------+-----------+
     * | Id | Name  | Salary | ManagerId |
     * +----+-------+--------+-----------+
     * | 1  | Joe   | 70000  | 3         |
     * | 2  | Henry | 80000  | 4         |
     * | 3  | Sam   | 60000  | NULL      |
     * | 4  | Max   | 90000  | NULL      |
     * +----+-------+--------+-----------+
     * 给定 Employee 表，编写一个 SQL 查询，该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中，Joe 是唯一一个收入超过他的经理的员工。
     *
     * +----------+
     * | Employee |
     * +----------+
     * | Joe      |
     * +----------+
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode-cn.com/problems/employees-earning-more-than-their-managers
     * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     */
    //首先可以对这个表进行自联合,或者说获取两个同样的表信息,这样select是一个笛卡尔乘积,会造成性能损失
    //select * from Employee as e1,Employee as e2 where e1.salary>e2.salary and e1.managerId=e2.managerId
    //但我们只需要显示一列数据并改名,那么就是如下的操作
    //select e1.Name as 'Employee' from Employee e1,Employee e2 where e1.Salary>e2.Salary and e1.ManagerId=e2.Id
}